from core.basic.skill import 技能
from core.basic.character import Character
from core.basic.skill import 主动技能, 被动技能
from core.basic.character import Character, equipment, 武器强化计算, 锻造计算


class 主动技能(主动技能):

    上车CDR = 1.0

    def 等效CD(self, **argv):
        # 武器类型 输出类型 额外CDR 手搓收益 恢复
        武器类型 = argv.get('武器类型', '')
        输出类型 = argv.get('输出类型', '')
        额外CDR = argv.get('额外CDR', 1.0)
        # 手搓收益 = argv.get('手搓收益', 1.0)
        面板显示 = argv.get('面板显示', False)
        额外恢复 = argv.get('额外恢复', 1.0)

        cdr = self.手搓CD()

        return round(max(self.CD * self.CDR * 额外CDR / ((self.恢复+额外恢复) if not 面板显示 else 1) * self.上车CDR * (self.武器CD系数(武器类型, 输出类型) - (cdr if not 面板显示 else 0)), self.CD * 0.3)*self.CDR_O, 1)


class 技能0(被动技能):
    名称 = '基础精通'
    倍率 = 1.0
    所在等级 = 1
    等级上限 = 200
    等级精通 = 110
    关联技能 = ['瞄准射击']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(self.倍率 * (0.463 + 0.089 * self.等级), 5)


class 技能1(主动技能):
    CD = 6.0 - 1.0
    TP成长 = 0.1
    TP上限 = 7
    名称 = "超频：压制"
    所在等级 = 5
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    # 学习诺维尔计划：涅磐后减少1秒
    CD = 6 - 1
    MP = [17, 178]
    无色消耗 = 0
    data0 = [0, 1801, 1983, 2166, 2348, 2531, 2713, 2896, 3079, 3262, 3445, 3628, 3809, 3992, 4175, 4358, 4541, 4723, 4906, 5089, 5271, 5454, 5636, 5819, 6002, 6185, 6368, 6550, 6733, 6915, 7098, 7281, 7463, 7646, 7829, 8012, 8195,
             8376, 8559, 8742, 8925, 9108, 9291, 9473, 9656, 9838, 10021, 10204, 10386, 10569, 10752, 10935, 11118, 11300, 11482, 11665, 11848, 12031, 12213, 12396, 12579, 12762, 12944, 13126, 13309, 13492, 13675, 13858, 14041, 14223, 14405]
    hit0 = 1
    TP成长 = 0.1
    TP上限 = 7
    电弧能量充能 = 20


class 技能2(主动技能):
    名称 = "烟尘弹"
    所在等级 = 10
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    CD = 6
    MP = [300, 322]
    无色消耗 = 0
    data0 = [0, 453, 500, 545, 592, 637, 684, 729, 776, 822, 868, 914, 960, 1006, 1052, 1099, 1144, 1191, 1237, 1283, 1329, 1375, 1421, 1467, 1513, 1559, 1605, 1652, 1697, 1744, 1789, 1836, 1881, 1928, 1974, 2020,
             2066, 2112, 2159, 2204, 2251, 2296, 2343, 2388, 2435, 2480, 2527, 2573, 2619, 2666, 2711, 2758, 2803, 2850, 2895, 2942, 2988, 3034, 3080, 3126, 3172, 3218, 3264, 3310, 3356, 3403, 3448, 3495, 3541, 3587, 3633]
    hit0 = 6
    TP成长 = 0.1
    TP上限 = 7
    电弧能量充能 = 0


class 技能3(主动技能):
    名称 = '瞄准射击'
    所在等级 = 15
    等级上限 = 1
    基础等级 = 1
    data0 = [int(i) for i in [0, 130]]
    hit0 = 7
    CD = 3
    TP成长 = 0.10
    TP上限 = 5


class 技能4(被动技能):
    名称 = '合金战士自动手枪精通'
    所在等级 = 15
    等级上限 = 20
    基础等级 = 10

    def 物理攻击力倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.12 + 0.02 * self.等级, 3)


class 技能5(主动技能):
    名称 = "枪托强击"
    所在等级 = 20
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    CD = 8
    MP = [30, 315]
    无色消耗 = 0
    data0 = [0, 4611, 5078, 5546, 6014, 6482, 6949, 7417, 7885, 8352, 8820, 9288, 9757, 10225, 10692, 11160, 11628, 12095, 12563, 13031, 13499, 13966, 14434, 14902, 15370, 15837, 16305, 16773, 17240, 17708, 18176, 18645, 19113, 19580, 20048, 20516,
             20983, 21451, 21919, 22387, 22854, 23322, 23790, 24258, 24725, 25193, 25661, 26128, 26596, 27065, 27533, 28001, 28468, 28936, 29404, 29871, 30339, 30807, 31275, 31742, 32210, 32678, 33146, 33613, 34081, 34549, 35016, 35485, 35953, 36421, 36889]
    hit0 = 1
    TP成长 = 0.1
    TP上限 = 7

    电弧能量充能 = 0


class 技能6(主动技能):
    名称 = "改装榴弹"
    所在等级 = 20
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    CD = 6
    MP = [30, 315]
    无色消耗 = 0
    data0 = [0, 3467, 3818, 4170, 4522, 4874, 5225, 5577, 5929, 6281, 6632, 6984, 7336, 7687, 8039, 8391, 8743, 9094, 9446, 9798, 10150, 10501, 10853, 11205, 11557, 11908, 12260, 12612, 12964, 13315, 13667, 14019, 14371, 14722, 15074, 15426, 15778,
             16129, 16481, 16833, 17185, 17536, 17888, 18240, 18592, 18943, 19295, 19647, 19999, 20350, 20702, 21054, 21406, 21757, 22109, 22461, 22813, 23164, 23516, 23868, 24219, 24571, 24923, 25275, 25626, 25978, 26330, 26682, 27033, 27385, 27737]
    hit0 = 1
    TP成长 = 0.1
    TP上限 = 7

    电弧能量充能 = 0

    形态 = ["常规", "步行"]

    def 形态变更(self, 形态, char: Character):
        if (形态 == '' or 形态 not in self.形态) and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "常规":
            self.上车CDR = 1.0
        if 形态 == "步行":
            self.上车CDR = 0.7


class 技能7(被动技能):
    名称 = '弱点扫描'
    所在等级 = 20
    等级上限 = 20
    基础等级 = 10

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1 + 0.02 * self.等级, 3)


class 技能8(主动技能):
    名称 = "超频：重盾保卫"
    所在等级 = 25
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    CD = 12
    MP = [43, 451]
    无色消耗 = 0
    data0 = [0, 7008, 7719, 8430, 9141, 9852, 10564, 11274, 11985, 12697, 13407, 14118, 14829, 15541, 16251, 16962, 17674, 18385, 19095, 19807, 20518, 21228, 21940, 22651, 23362, 24072, 24784, 25495, 26205, 26917, 27628, 28339, 29050, 29761, 30472, 31182,
             31894, 32605, 33316, 34027, 34738, 35449, 36161, 36871, 37582, 38294, 39004, 39715, 40426, 41138, 41848, 42559, 43271, 43981, 44692, 45404, 46115, 46825, 47537, 48248, 48958, 49669, 50381, 51092, 51802, 52514, 53225, 53936, 54647, 55358, 56069]
    hit0 = 1
    TP成长 = 0.1
    TP上限 = 7

    电弧能量充能 = 30


class 技能9(被动技能):
    名称 = '改造烟尘弹'
    所在等级 = 25
    等级上限 = 1
    基础等级 = 1
    关联技能 = ['烟尘弹']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.2, 3)


class 技能10(主动技能):
    名称 = "磁力手雷"
    所在等级 = 30
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    CD = 12
    MP = [122, 1024]
    无色消耗 = 0
    data0 = [0, 2184, 2405, 2628, 2850, 3071, 3293, 3514, 3736, 3957, 4179, 4400, 4622, 4845, 5066, 5288, 5509, 5731, 5952, 6174, 6395, 6617, 6839, 7061, 7283, 7504, 7726, 7947, 8169, 8390, 8612, 8834, 9055, 9278, 9499, 9721, 9942, 10164,
             10385, 10607, 10829, 11050, 11272, 11494, 11716, 11937, 12159, 12380, 12602, 12823, 13045, 13267, 13488, 13711, 13932, 14154, 14375, 14597, 14818, 15040, 15262, 15483, 15705, 15926, 16149, 16370, 16592, 16813, 17035, 17257, 17478]
    hit0 = 3
    TP成长 = 0.1
    TP上限 = 7

    电弧能量充能 = 0

    形态 = ["常规", "步行"]

    def 形态变更(self, 形态, char: Character):
        if (形态 == '' or 形态 not in self.形态) and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "常规":
            self.上车CDR = 1.0
        if 形态 == "步行":
            self.上车CDR = 0.7


class 技能11(主动技能):
    电弧能量充能 = 0
    名称 = "三连霰弹"
    所在等级 = 30
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    CD = 8
    MP = [57, 598]
    无色消耗 = 0
    data0 = [0, 1122, 1235, 1349, 1463, 1577, 1690, 1805, 1919, 2032, 2146, 2260, 2374, 2487, 2601, 2715, 2830, 2943, 3057, 3171, 3284, 3398, 3512, 3626, 3739, 3854, 3968, 4081, 4195, 4309, 4423, 4536, 4650, 4764, 4879,
             4992, 5106, 5220, 5333, 5447, 5561, 5675, 5789, 5903, 6017, 6131, 6244, 6358, 6472, 6585, 6699, 6814, 6928, 7041, 7155, 7269, 7382, 7496, 7610, 7724, 7838, 7952, 8066, 8180, 8293, 8407, 8521, 8634, 8748, 8863, 8977]
    hit0 = 1
    data1 = [0, 1682, 1854, 2024, 2195, 2366, 2536, 2707, 2878, 3048, 3219, 3390, 3560, 3732, 3903, 4073, 4244, 4415, 4585, 4756, 4927, 5097, 5268, 5439, 5609, 5781, 5952, 6122, 6293, 6464, 6634, 6805, 6976, 7146, 7317, 7488, 7658,
             7830, 8001, 8172, 8342, 8513, 8684, 8854, 9025, 9196, 9366, 9537, 9709, 9879, 10050, 10221, 10391, 10562, 10733, 10903, 11074, 11245, 11415, 11586, 11758, 11928, 12099, 12270, 12440, 12611, 12782, 12952, 13123, 13294, 13464]
    hit1 = 1
    data2 = [0, 2804, 3089, 3374, 3659, 3943, 4227, 4512, 4797, 5082, 5367, 5650, 5935, 6220, 6505, 6788, 7073, 7358, 7643, 7928, 8212, 8496, 8781, 9066, 9350, 9635, 9919, 10204, 10489, 10773, 11058, 11342, 11627, 11911, 12196, 12481, 12766,
             13050, 13334, 13619, 13904, 14189, 14473, 14757, 15042, 15327, 15612, 15895, 16180, 16465, 16750, 17035, 17318, 17603, 17888, 18173, 18457, 18742, 19026, 19311, 19596, 19880, 20165, 20449, 20734, 21018, 21303, 21588, 21872, 22157, 22441]
    hit2 = 1
    TP成长 = 0.1
    TP上限 = 7

    形态 = ["常规", "步行"]

    def 形态变更(self, 形态, char: Character):
        if (形态 == '' or 形态 not in self.形态) and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "常规":
            self.上车CDR = 1.0
        if 形态 == "步行":
            self.上车CDR = 0.7


class 技能12(主动技能):
    名称 = "爆裂飞踢"
    所在等级 = 35
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    CD = 15
    MP = [122, 1024]
    无色消耗 = 1
    data0 = [0, 3553, 3914, 4275, 4636, 4996, 5357, 5717, 6077, 6438, 6798, 7159, 7519, 7880, 8240, 8601, 8961, 9323, 9683, 10044, 10404, 10765, 11125, 11486, 11846, 12207, 12567, 12928, 13288, 13648, 14010, 14371, 14731, 15091, 15452, 15812, 16173,
             16533, 16894, 17254, 17615, 17975, 18336, 18696, 19058, 19418, 19779, 20139, 20500, 20860, 21221, 21581, 21942, 22302, 22662, 23023, 23383, 23745, 24105, 24466, 24826, 25187, 25547, 25908, 26268, 26629, 26989, 27350, 27710, 28071, 28431]
    hit0 = 1
    data1 = [0, 1332, 1467, 1602, 1738, 1873, 2008, 2143, 2278, 2413, 2549, 2684, 2820, 2955, 3090, 3226, 3361, 3496, 3631, 3766, 3901, 4037, 4172, 4307, 4442, 4577, 4713, 4848, 4983, 5118, 5253, 5388, 5524, 5659, 5794, 5929,
             6064, 6199, 6335, 6470, 6605, 6740, 6875, 7011, 7146, 7281, 7416, 7551, 7688, 7823, 7958, 8093, 8228, 8363, 8499, 8634, 8769, 8904, 9039, 9174, 9310, 9445, 9580, 9715, 9850, 9986, 10121, 10256, 10391, 10526, 10661]
    hit1 = 4
    TP成长 = 0.1
    TP上限 = 5

    电弧能量充能 = 0

    形态 = ["常规", "步行"]

    def 形态变更(self, 形态, char: Character):
        if (形态 == '' or 形态 not in self.形态) and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "常规":
            self.上车CDR = 1.0
        if 形态 == "步行":
            self.上车CDR = 0.7


class 技能13(主动技能):
    名称 = "超频：机械冲撞"
    所在等级 = 35
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    CD = 13
    MP = [122, 1024]
    无色消耗 = 1
    data0 = [0, 5112, 5631, 6149, 6668, 7186, 7705, 8224, 8742, 9261, 9779, 10299, 10818, 11336, 11855, 12373, 12892, 13410, 13929, 14448, 14966, 15485, 16003, 16522, 17040, 17560, 18079, 18597, 19116, 19634, 20153, 20672, 21190, 21709, 22227, 22746,
             23264, 23783, 24303, 24821, 25340, 25858, 26377, 26896, 27414, 27933, 28451, 28970, 29488, 30007, 30526, 31044, 31564, 32082, 32601, 33120, 33638, 34157, 34675, 35194, 35712, 36231, 36750, 37268, 37787, 38305, 38824, 39344, 39862, 40381, 40899]
    hit0 = 1
    data1 = [0, 3408, 3753, 4100, 4445, 4790, 5137, 5482, 5829, 6174, 6519, 6866, 7211, 7557, 7903, 8248, 8595, 8940, 9286, 9632, 9977, 10324, 10669, 11014, 11361, 11706, 12052, 12398, 12743, 13090, 13435, 13781, 14127, 14472, 14818, 15164, 15509,
             15856, 16201, 16547, 16893, 17238, 17585, 17930, 18276, 18622, 18967, 19313, 19659, 20005, 20351, 20696, 21042, 21388, 21733, 22079, 22425, 22771, 23117, 23462, 23808, 24154, 24500, 24846, 25191, 25537, 25883, 26229, 26574, 26920, 27266]
    hit1 = 1
    TP成长 = 0.1
    TP上限 = 5

    电弧能量充能 = 30
    是否有护石 = 1

    def 装备护石(self, char):
        self.power0 = 1+0.91+0.32
        self.hit1 = 0


class 技能14(主动技能):
    名称 = "战略轰炸"
    所在等级 = 40
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    CD = 20
    MP = [162, 1360]
    无色消耗 = 1
    data0 = [0, 1794, 1975, 2157, 2340, 2522, 2704, 2886, 3068, 3250, 3433, 3614, 3796, 3978, 4160, 4342, 4525, 4707, 4889, 5070, 5252, 5434, 5616, 5799, 5981, 6163, 6345, 6526, 6708, 6891, 7073, 7255, 7437, 7619, 7801, 7982, 8165,
             8347, 8529, 8711, 8893, 9075, 9258, 9439, 9621, 9803, 9985, 10167, 10350, 10532, 10714, 10895, 11077, 11259, 11441, 11624, 11806, 11988, 12170, 12351, 12533, 12716, 12898, 13080, 13262, 13444, 13626, 13807, 13990, 14172, 14354]
    hit0 = 3
    data1 = [0, 2691, 2964, 3237, 3510, 3783, 4057, 4329, 4602, 4875, 5149, 5421, 5694, 5968, 6241, 6513, 6787, 7060, 7332, 7606, 7879, 8152, 8425, 8698, 8971, 9245, 9517, 9790, 10063, 10337, 10609, 10882, 11156, 11428, 11701, 11975, 12248,
             12520, 12794, 13067, 13340, 13612, 13886, 14159, 14433, 14705, 14978, 15251, 15525, 15797, 16070, 16344, 16616, 16889, 17163, 17436, 17708, 17982, 18255, 18528, 18800, 19074, 19347, 19621, 19893, 20166, 20439, 20712, 20985, 21258, 21532]
    hit1 = 3
    TP成长 = 0.1
    TP上限 = 5

    电弧能量充能 = 0
    是否有护石 = 1

    def 装备护石(self, char):
        self.hit0 += 2
        self.power0 = 0.89
        self.power1 = 1.29
        self.CDR *= 0.9


class 技能15(主动技能):
    名称 = "雷达扫射"
    所在等级 = 45
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    CD = 40
    MP = [285, 2394]
    无色消耗 = 2
    data0 = [0, 1582, 1743, 1904, 2063, 2224, 2385, 2546, 2707, 2866, 3027, 3188, 3349, 3508, 3669, 3830, 3991, 4151, 4311, 4472, 4633, 4794, 4954, 5114, 5275, 5436, 5596, 5757, 5917, 6078, 6238, 6399, 6560, 6720, 6880, 7041, 7202,
             7363, 7523, 7683, 7844, 8005, 8166, 8325, 8486, 8647, 8808, 8968, 9128, 9289, 9450, 9610, 9771, 9931, 10092, 10253, 10413, 10574, 10734, 10895, 11055, 11216, 11377, 11537, 11697, 11858, 12019, 12180, 12339, 12500, 12661]
    hit0 = 15
    TP成长 = 0.1
    TP上限 = 5
    是否有护石 = 1

    电弧能量充能 = 0

    形态 = ["常规", "步行"]

    def 形态变更(self, 形态, char: Character):
        if (形态 == '' or 形态 not in self.形态) and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "常规":
            self.上车CDR = 1.0
        if 形态 == "步行":
            self.上车CDR = 0.7

    def 装备护石(self, char):
        self.倍率 = 1.31
        self.CDR *= 0.95


class 技能16(被动技能):
    名称 = '机体复原'
    所在等级 = 48
    等级上限 = 50
    学习间隔 = 3
    等级精通 = 40
    关联技能 = ['所有']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.00 + 0.02 * self.等级, 3)


class 技能17(主动技能):
    名称 = '电弧能量释放'
    所在等级 = 48
    等级上限 = 1
    基础等级 = 1
    data0 = [0, 9795, 11357, 12919, 14480, 16042, 17603, 19165, 20727, 22288, 23850, 25411, 26973, 28535, 30096, 31658, 33219, 34781, 36343, 37904, 39466, 41027, 42589, 44151, 45712,
             47274, 48835, 50397, 51959, 53520, 55082, 56643, 58205, 59767, 61328, 62890, 64451, 66013, 67575, 69136, 70698, 72259, 73822, 75384, 76945, 78507, 80068, 81630, 83192, 84753, 86315]
    hit0 = 1
    CD = 1


class 技能18(主动技能):
    名称 = '超频：全领域攻击'
    所在等级 = 50
    等级上限 = 50
    学习间隔 = 5
    等级精通 = 40
    CD = 145
    MP = [1065, 8946]
    无色消耗 = 5
    data0 = [0, 7567, 9322, 11077, 12830, 14585, 16340, 18094, 19849, 21604, 23359, 25113, 26868, 28623, 30378, 32132, 33887, 35642, 37397, 39151, 40906, 42661, 44416, 46170, 47925,
             49680, 51434, 53189, 54944, 56699, 58453, 60208, 61963, 63718, 65472, 67227, 68982, 70737, 72491, 74246, 76001, 77755, 79510, 81265, 83020, 84774, 86529, 88284, 90039, 91793, 93548]
    hit0 = 1
    data1 = [0, 3783, 4660, 5538, 6415, 7292, 8170, 9047, 9925, 10802, 11679, 12557, 13434, 14311, 15189, 16066, 16944, 17821, 18698, 19576, 20453, 21330, 22208, 23085, 23962, 24840,
             25717, 26595, 27472, 28349, 29227, 30104, 30981, 31859, 32736, 33614, 34491, 35368, 36246, 37123, 38000, 38878, 39755, 40632, 41510, 42387, 43265, 44142, 45019, 45897, 46774]
    hit1 = 4
    data2 = [0, 3783, 4660, 5538, 6415, 7292, 8170, 9047, 9925, 10802, 11679, 12557, 13434, 14311, 15189, 16066, 16944, 17821, 18698, 19576, 20453, 21330, 22208, 23085, 23962, 24840,
             25717, 26595, 27472, 28349, 29227, 30104, 30981, 31859, 32736, 33614, 34491, 35368, 36246, 37123, 38000, 38878, 39755, 40632, 41510, 42387, 43265, 44142, 45019, 45897, 46774]
    hit2 = 1
    data3 = [0, 37836, 46609, 55383, 64156, 72929, 81703, 90477, 99250, 108024, 116798, 125571, 134345, 143119, 151893, 160666, 169439, 178212, 186986, 195760, 204534, 213307, 222081, 230855, 239628, 248402,
             257176, 265948, 274722, 283496, 292269, 301043, 309817, 318590, 327364, 336138, 344911, 353685, 362458, 371231, 380005, 388779, 397552, 406326, 415100, 423873, 432647, 441421, 450194, 458967, 467741]
    hit3 = 1

    电弧能量充能 = 100


class 技能19(主动技能):
    名称 = "超频：电流闪踢"
    所在等级 = 60
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40
    CD = 25
    MP = [356, 996]
    无色消耗 = 1
    data0 = [0, 19382, 21349, 23315, 25282, 27247, 29214, 31180, 33147, 35112, 37079, 39045, 41012, 42979, 44945, 46911, 48877, 50844, 52810, 54777, 56742, 58709, 60675, 62642, 64609, 66574,
             68541, 70507, 72474, 74440, 76406, 78372, 80339, 82305, 84272, 86239, 88204, 90171, 92137, 94104, 96070, 98036, 100002, 101969, 103935, 105902, 107867, 109834, 111801, 113767, 115734]
    hit0 = 1
    TP成长 = 0.1
    TP上限 = 5

    是否有护石 = 1
    电弧能量充能 = 50
    无色消耗 = 1

    def 装备护石(self, char):
        self.倍率 = 1.31
        self.CDR *= 0.9


class 技能20(主动技能):
    名称 = "堡垒轰击"
    所在等级 = 70
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40
    CD = 50
    MP = [732, 1537]
    无色消耗 = 2
    data0 = [0, 1449, 1596, 1743, 1891, 2037, 2184, 2332, 2478, 2625, 2772, 2920, 3066, 3213, 3361, 3508, 3654, 3802, 3949, 4095, 4243, 4390, 4537, 4684, 4831,
             4978, 5126, 5272, 5419, 5567, 5714, 5860, 6007, 6155, 6301, 6448, 6596, 6743, 6889, 7037, 7184, 7331, 7478, 7625, 7772, 7920, 8066, 8213, 8361, 8507, 8654]
    hit0 = 30
    TP成长 = 0.1
    TP上限 = 5

    电弧能量充能 = 0
    是否有护石 = 1

    def 装备护石(self, char):
        self.倍率 *= 0.7
        self.CD = 25


class 技能21(主动技能):
    名称 = "AT-SO步行者"
    备注 = "若选择手动请按照射击发数填入次数；自动的单次为步行者一轮的伤害"
    所在等级 = 75
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40
    CD = 40
    MP = [606, 4696]
    无色消耗 = 3
    data0 = [0, 1135, 1251, 1365, 1481, 1597, 1712, 1826, 1942, 2058, 2173, 2288, 2403, 2519, 2633, 2749, 2864, 2980, 3094, 3210, 3325, 3441, 3555, 3671, 3786,
             3901, 4016, 4132, 4247, 4362, 4477, 4593, 4708, 4823, 4938, 5054, 5168, 5284, 5399, 5515, 5629, 5745, 5861, 5976, 6091, 6206, 6322, 6436, 6552, 6667, 6783]
    hit0 = 112
    data1 = [0, 642, 708, 773, 838, 903, 969, 1034, 1099, 1164, 1230, 1295, 1360, 1425, 1490, 1556, 1621, 1686, 1751, 1817, 1882, 1947, 2012, 2078, 2143, 2208,
             2273, 2338, 2404, 2469, 2534, 2599, 2665, 2730, 2795, 2860, 2926, 2991, 3056, 3121, 3186, 3252, 3317, 3382, 3447, 3513, 3578, 3643, 3708, 3774, 3839]
    hit1 = 0

    电弧能量充能 = 0
    CD_min = 20
    是否有护石 = 1

    形态 = ["自动", "手动"]

    def 形态变更(self, 形态, char: Character):
        if (形态 == '' or 形态 not in self.形态) and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "自动":
            self.power0 = 1
            self.power1 = 0
        if 形态 == "手动":
            self.power0 = 0
            self.power1 = 1

    def 装备护石(self, char):
        self.CD_min = 30
        # 增加持续时间
        self.hit0 *= 30/20
        # self.hit1 *= 30/20
        # 自爆
        self.data2 = self.data0
        self.hit2 = 11.2


class 技能22(被动技能):
    名称 = '躯体重塑'
    所在等级 = 75
    等级上限 = 50
    学习间隔 = 3
    等级精通 = 40

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.22 + 0.02 * self.等级, 3)


class 技能23(主动技能):
    名称 = "炎神攻城炮"
    所在等级 = 80
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40
    CD = 45
    MP = [877, 6577]
    无色消耗 = 5
    data0 = [0, 74655, 82229, 89803, 97376, 104950, 112525, 120098, 127672, 135245, 142820, 150393, 157967, 165540, 173115, 180688, 188262, 195835, 203410, 210983, 218557, 226130, 233705, 241278, 248852, 256427,
             264000, 271574, 279147, 286722, 294295, 301869, 309442, 317017, 324590, 332164, 339737, 347312, 354885, 362459, 370032, 377607, 385181, 392754, 400328, 407902, 415476, 423049, 430623, 438197, 445771]
    hit0 = 1

    是否有护石 = 1
    电弧能量充能 = 0

    def 装备护石(self, char):
        self.倍率 = 1.25
        self.CDR *= 0.9


class 技能24(主动技能):
    名称 = '超频：伊奎利斯-MR'
    所在等级 = 85
    等级上限 = 50
    学习间隔 = 5
    等级精通 = 40
    CD = 180
    MP = [2484, 4968]
    无色消耗 = 10
    data0 = [0, 8668, 10678, 12688, 14699, 16708, 18718, 20729, 22739, 24749, 26758, 28769, 30779, 32789, 34799, 36810, 38819, 40829, 42839, 44850, 46860, 48870, 50880, 52890, 54900, 56910,
             58921, 60931, 62940, 64950, 66961, 68971, 70981, 72990, 75001, 77011, 79021, 81032, 83042, 85052, 87061, 89072, 91082, 93092, 95102, 97113, 99122, 101132, 103142, 105153, 107163]
    hit0 = 20

    电弧能量充能 = 100


class 技能25(主动技能):
    名称 = "超频：音速瞬杀"
    所在等级 = 95
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40
    CD = 60
    MP = [1169, 8769]
    无色消耗 = 7
    data0 = [0, 6939, 7643, 8347, 9051, 9756, 10460, 11164, 11868, 12572, 13276, 13981, 14684, 15388, 16092, 16796, 17500, 18204, 18909, 19613, 20317, 21021, 21724, 22428, 23133, 23837,
             24541, 25245, 25949, 26653, 27357, 28062, 28766, 29469, 30173, 30877, 31581, 32285, 32990, 33694, 34398, 35102, 35806, 36509, 37214, 37918, 38622, 39326, 40030, 40734, 41438]
    hit0 = 4
    data1 = [0, 41640, 45863, 50088, 54312, 58537, 62761, 66986, 71210, 75434, 79659, 83883, 88108, 92331, 96556, 100780, 105005, 109229, 113453, 117678, 121902, 126127, 130351, 134576, 138800, 143023,
             147248, 151472, 155697, 159921, 164146, 168370, 172595, 176819, 181043, 185268, 189491, 193716, 197940, 202165, 206389, 210613, 214838, 219062, 223287, 227511, 231736, 235960, 240183, 244408, 248632]
    hit1 = 1
    data2 = [0, 69400, 76440, 83481, 90521, 97562, 104602, 111643, 118683, 125725, 132765, 139806, 146846, 153887, 160927, 167968, 175008, 182049, 189089, 196130, 203170, 210211, 217251, 224292, 231333, 238373,
             245415, 252455, 259496, 266536, 273577, 280617, 287658, 294698, 301739, 308779, 315820, 322860, 329901, 336941, 343982, 351022, 358064, 365104, 372145, 379185, 386226, 393267, 400307, 407348, 414388]
    hit2 = 1

    电弧能量充能 = 70


class 技能26(被动技能):
    名称 = '诺维尔计划：涅磐'
    所在等级 = 95
    等级上限 = 50
    学习间隔 = 3
    等级精通 = 40

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.18 + 0.02 * self.等级, 5)


class 技能27(主动技能):
    名称 = "超频：末世终结之战"
    所在等级 = 100
    等级上限 = 50
    学习间隔 = 5
    等级精通 = 40
    CD = 290
    MP = [4002, 8004]
    无色消耗 = 15
    data0 = [0, 46419, 57182, 67947, 78711, 89475, 100238, 111002, 121766, 132530, 143293, 154058, 164822, 175586, 186350, 197113, 207877, 218641, 229406, 240169, 250933, 261697, 272461, 283224, 293988, 304752,
             315517, 326281, 337044, 347808, 358572, 369336, 380099, 390864, 401628, 412392, 423156, 433919, 444683, 455447, 466212, 476975, 487739, 498503, 509267, 520030, 530794, 541558, 552323, 563087, 573850]
    hit0 = 1
    data1 = [0, 5802, 7147, 8492, 9838, 11183, 12529, 13874, 15220, 16565, 17911, 19257, 20602, 21948, 23293, 24639, 25984, 27330, 28675, 30021, 31366, 32712, 34057, 35403, 36748, 38094,
             39439, 40785, 42130, 43476, 44821, 46167, 47512, 48858, 50203, 51549, 52895, 54239, 55584, 56930, 58275, 59621, 60967, 62312, 63658, 65003, 66349, 67694, 69040, 70385, 71731]
    hit1 = 12
    data2 = [0, 23210, 28591, 33973, 39355, 44737, 50119, 55501, 60883, 66265, 71646, 77028, 82410, 87792, 93174, 98557, 103939, 109321, 114703, 120084, 125466, 130848, 136230, 141612, 146994, 152376,
             157758, 163140, 168521, 173903, 179286, 184668, 190050, 195432, 200814, 206196, 211578, 216959, 222341, 227723, 233105, 238487, 243869, 249251, 254634, 260015, 265397, 270779, 276161, 281543, 286925]
    hit2 = 3
    data3 = [0, 232097, 285915, 339735, 393555, 447374, 501194, 555014, 608833, 662652, 716472, 770291, 824111, 877931, 931750, 985570, 1039389, 1093208, 1147028, 1200848, 1254667, 1308487, 1362307, 1416125, 1469945, 1523765,
             1577584, 1631404, 1685224, 1739044, 1792863, 1846682, 1900501, 1954321, 2008141, 2061960, 2115780, 2169599, 2223418, 2277238, 2331058, 2384878, 2438697, 2492517, 2546336, 2600156, 2653975, 2707794, 2761614, 2815434, 2869254]
    hit3 = 1
    data4 = [0, 46419, 57182, 67947, 78711, 89475, 100238, 111002, 121766, 132530, 143293, 154058, 164822, 175586, 186350, 197113, 207877, 218641, 229406, 240169, 250933, 261697, 272461, 283224, 293988, 304752,
             315517, 326281, 337044, 347808, 358572, 369336, 380099, 390864, 401628, 412392, 423156, 433919, 444683, 455447, 466212, 476975, 487739, 498503, 509267, 520030, 530794, 541558, 552323, 563087, 573850]
    hit4 = 1

    电弧能量充能 = 100


class classChange(Character):
    def __init__(self, equVersion=""):
        self.实际名称 = 'assault'
        self.名称 = '重霄·合金战士'
        self.角色 = '神枪手(男)'
        self.角色类型 = '输出'
        self.职业 = '合金战士'
        self.武器选项 = ['自动手枪']
        self.输出类型选项 = ['物理百分比']
        self.防具精通属性 = ['力量']
        self.类型 = '物理百分比'
        self.武器类型 = '自动手枪'
        self.防具类型 = '轻甲'
        技能列表 = []
        技能序号 = {}
        i = 0
        while i >= 0:
            try:
                tem = eval('技能'+str(i)+'()')
                tem.基础等级计算()
                技能序号[tem.名称] = i
                技能列表.append(tem)
                i += 1
            except:
                i = -1
        self.技能栏 = 技能列表
        self.技能序号 = 技能序号
        self.buff = 2.00

        super().__init__(equVersion)

    def 职业特殊计算(self):
        电弧能量释放 = self.get_skill_by_name('电弧能量释放')
        电弧能量释放.等级上限 = 50
        电弧能量释放.等级 = self.get_skill_by_name('机体复原').等级

    def set_individuation(self, info):
        info['char_optiopns'] = []
        info['char_optiopns'].append({
                "name": '[AT-SO步行者]',
                "option": ["手动单轮攻击 {} 次".format(str(i)) for i in range(1, 1000)]
            })

    def 职业特殊设置(self):
        self.get_skill_by_name("AT-SO步行者").hit1 = self.get_individuation(0) + 1
        pass

    def 武器计算(self, temp: equipment) -> None:
        self.武器类型 = temp.类型
        self.基础属性加成(物理攻击力=temp.魔法攻击力, 魔法攻击力=temp.魔法攻击力, 独立攻击力=temp.独立攻击力)
        info = self.打造详情.get(temp.部位, {})
        攻击力 = 武器强化计算(temp.等级, temp.品质, info.get('cursed_number', 0), temp.类型,'魔法')
        独立攻击力 = 锻造计算(temp.等级, temp.品质, info.get('dz_number', 0))

        self.打造['武器']['强化攻击力'] = [攻击力, 攻击力, 0]

        self.打造['武器']['锻造加成'][0] = 独立攻击力

        self.基础属性加成(物理攻击力=攻击力, 魔法攻击力=攻击力, 独立攻击力=独立攻击力)